<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>EnTech FPK: Subscriber Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">EnTech FPK
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">FRC Programming Kit by the EnTech 281 GreenVillains</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="class_subscriber-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Subscriber Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_subscriber_8hpp_source.html">Subscriber.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Subscriber:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_subscriber.png" usemap="#Subscriber_map" alt=""/>
  <map id="Subscriber_map" name="Subscriber_map">
<area href="class_operation_3_01_unspecified_01_4.html" alt="Operation&lt; Unspecified &gt;" shape="rect" coords="0,56,683,80"/>
<area href="class_robot_subsystem.html" alt="RobotSubsystem" shape="rect" coords="693,56,1376,80"/>
<area href="class_service.html" alt="Service" shape="rect" coords="1386,56,2069,80"/>
<area href="class_operation_3_01void_01_4.html" alt="Operation&lt; void &gt;" shape="rect" coords="0,112,683,136"/>
<area href="class_drive_subsystem.html" alt="DriveSubsystem" shape="rect" coords="693,112,1376,136"/>
<area href="class_compound_service.html" alt="CompoundService" shape="rect" coords="2079,112,2762,136"/>
<area href="class_dummy_service.html" alt="DummyService" shape="rect" coords="2079,168,2762,192"/>
<area href="class_game_service.html" alt="GameService" shape="rect" coords="2079,224,2762,248"/>
<area href="class_joystick_drive_service.html" alt="JoystickDriveService&lt; Drive, Value, Handler &gt;" shape="rect" coords="2079,280,2762,304"/>
<area href="class_joystick_drive_service.html" alt="JoystickDriveService&lt; TankDriveSubsystem, TankValue, TankDriveSubsystem::DriveByTank &gt;" shape="rect" coords="2079,336,2762,360"/>
<area href="class_live_window_service.html" alt="LiveWindowService" shape="rect" coords="2079,392,2762,416"/>
<area href="class_ps3_drive_service.html" alt="Ps3DriveService&lt; Drive, Value, Fetcher, Handler &gt;" shape="rect" coords="2079,448,2762,472"/>
<area href="class_selector_service.html" alt="SelectorService&lt; Item &gt;" shape="rect" coords="2079,504,2762,528"/>
<area href="class_selector_service.html" alt="SelectorService&lt; Service * &gt;" shape="rect" coords="2079,560,2762,584"/>
<area href="class_state.html" alt="State" shape="rect" coords="2079,616,2762,640"/>
<area href="class_state_machine_service.html" alt="StateMachineService" shape="rect" coords="2079,672,2762,696"/>
<area href="class_two_joystick_drive_service.html" alt="TwoJoystickDriveService&lt; Drive, Value, Handler &gt;" shape="rect" coords="2079,728,2762,752"/>
<area href="class_two_joystick_drive_service.html" alt="TwoJoystickDriveService&lt; MecanumDriveSubsystem, CartesianValue, MecanumDriveSubsystem::DriveByCartesian &gt;" shape="rect" coords="2079,784,2762,808"/>
<area href="class_two_joystick_drive_service.html" alt="TwoJoystickDriveService&lt; TankDriveSubsystem, TankValue, TankDriveSubsystem::DriveByTank &gt;" shape="rect" coords="2079,840,2762,864"/>
<area href="class_xbox_drive_service.html" alt="XboxDriveService&lt; Drive, Value, Handler &gt;" shape="rect" coords="2079,896,2762,920"/>
<area href="class_xbox_drive_service.html" alt="XboxDriveService&lt; MecanumDriveSubsystem, CartesianValue, MecanumDriveSubsystem::DriveByCartesian &gt;" shape="rect" coords="2079,952,2762,976"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acf994baa7d26eaa3d05c767b695e5d64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_subscriber.html#acf994baa7d26eaa3d05c767b695e5d64">Subscriber</a> ()</td></tr>
<tr class="separator:acf994baa7d26eaa3d05c767b695e5d64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a699f864e05fe964363aeaeb600eeb6b4"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_subscriber.html#a699f864e05fe964363aeaeb600eeb6b4">~Subscriber</a> ()</td></tr>
<tr class="separator:a699f864e05fe964363aeaeb600eeb6b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:adf012d21f14dd64d1afd95efe799d370"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:adf012d21f14dd64d1afd95efe799d370"><td class="memTemplItemLeft" align="right" valign="top">T &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_subscriber.html#adf012d21f14dd64d1afd95efe799d370">RequireControl</a> (T &amp;obj)</td></tr>
<tr class="separator:adf012d21f14dd64d1afd95efe799d370"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa545a5133edce53707738ee55d7b47cc"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa545a5133edce53707738ee55d7b47cc"><td class="memTemplItemLeft" align="right" valign="top">boost::shared_ptr&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_subscriber.html#aa545a5133edce53707738ee55d7b47cc">Launch</a> (boost::shared_ptr&lt; T &gt; operation)</td></tr>
<tr class="separator:aa545a5133edce53707738ee55d7b47cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d2c5853af0a642ce7f5b52b3d09112"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ac4d2c5853af0a642ce7f5b52b3d09112"><td class="memTemplItemLeft" align="right" valign="top">boost::shared_ptr&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_subscriber.html#ac4d2c5853af0a642ce7f5b52b3d09112">Launch</a> (T *operation, bool canDeleteOperation=false)</td></tr>
<tr class="separator:ac4d2c5853af0a642ce7f5b52b3d09112"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8db71f899cdbf3608791b8506814c850"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_subscriber.html#a8db71f899cdbf3608791b8506814c850">CancelAllOperations</a> ()</td></tr>
<tr class="separator:a8db71f899cdbf3608791b8506814c850"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ffeb82e812ef06db4aff08ee01d427b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_subscriber.html#a6ffeb82e812ef06db4aff08ee01d427b">HandlePeriodic</a> ()</td></tr>
<tr class="separator:a6ffeb82e812ef06db4aff08ee01d427b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:af45e8a01b72511d7dc39a93fdbeada29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af45e8a01b72511d7dc39a93fdbeada29"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>SystematicRobot</b></td></tr>
<tr class="separator:af45e8a01b72511d7dc39a93fdbeada29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6474ceb8669761e879329b39c3afb899"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6474ceb8669761e879329b39c3afb899"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>Service</b></td></tr>
<tr class="separator:a6474ceb8669761e879329b39c3afb899"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6544cbdcc4e43246121df1b0400c13de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6544cbdcc4e43246121df1b0400c13de"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>RobotSubsystem</b></td></tr>
<tr class="separator:a6544cbdcc4e43246121df1b0400c13de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf8bc3840e3c07695fb1e05a801d1d92"><td class="memTemplParams" colspan="2"><a class="anchor" id="adf8bc3840e3c07695fb1e05a801d1d92"></a>
template&lt;typename Result &gt; </td></tr>
<tr class="memitem:adf8bc3840e3c07695fb1e05a801d1d92"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Operation</b></td></tr>
<tr class="separator:adf8bc3840e3c07695fb1e05a801d1d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The <a class="el" href="class_subscriber.html">Subscriber</a> class is the base class for objects that subscribe to <a class="el" href="class_systematic_robot.html">SystematicRobot</a>'s events, directly or indirectly.</p>
<p>This class is untested. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="acf994baa7d26eaa3d05c767b695e5d64"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Subscriber::Subscriber </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructor for <a class="el" href="class_subscriber.html">Subscriber</a>. </p>

</div>
</div>
<a class="anchor" id="a699f864e05fe964363aeaeb600eeb6b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Subscriber::~Subscriber </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Destructor for <a class="el" href="class_subscriber.html">Subscriber</a>. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a8db71f899cdbf3608791b8506814c850"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Subscriber::CancelAllOperations </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Cancels all operations that the subscriber launched. </p>

</div>
</div>
<a class="anchor" id="a6ffeb82e812ef06db4aff08ee01d427b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Subscriber::HandlePeriodic </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This function is run every periodic loop.</p>
<p>This function is called every periodic loop when subscribed to the robot. See <a class="el" href="class_systematic_robot.html">SystematicRobot</a> documentation for more on periodic loops and subscription. This function should be overridden to handle the periodic <a class="el" href="class_subscriber.html">Subscriber</a> tasks. </p>

<p>Reimplemented in <a class="el" href="class_tank_drive_subsystem.html#ab834b550c5bc2aa5ea164201287a3ebf">TankDriveSubsystem</a>, <a class="el" href="class_mecanum_drive_subsystem.html#adf2c3d907fc8271f70dee8eb3be2576f">MecanumDriveSubsystem</a>, <a class="el" href="class_selector_service.html#a03e873370af26ecad1d1ac5a77d62c42">SelectorService&lt; Item &gt;</a>, <a class="el" href="class_selector_service.html#a03e873370af26ecad1d1ac5a77d62c42">SelectorService&lt; Service * &gt;</a>, <a class="el" href="class_two_joystick_drive_service.html#aac337e302b872d3126366ceb966aec3c">TwoJoystickDriveService&lt; Drive, Value, Handler &gt;</a>, <a class="el" href="class_two_joystick_drive_service.html#aac337e302b872d3126366ceb966aec3c">TwoJoystickDriveService&lt; MecanumDriveSubsystem, CartesianValue, MecanumDriveSubsystem::DriveByCartesian &gt;</a>, <a class="el" href="class_two_joystick_drive_service.html#aac337e302b872d3126366ceb966aec3c">TwoJoystickDriveService&lt; TankDriveSubsystem, TankValue, TankDriveSubsystem::DriveByTank &gt;</a>, <a class="el" href="class_joystick_drive_service.html#a14aafab1dedef204fbb3b4687e337732">JoystickDriveService&lt; Drive, Value, Handler &gt;</a>, <a class="el" href="class_joystick_drive_service.html#a14aafab1dedef204fbb3b4687e337732">JoystickDriveService&lt; TankDriveSubsystem, TankValue, TankDriveSubsystem::DriveByTank &gt;</a>, <a class="el" href="class_async_result_finish_state.html#a9c327aa447e197c8f6e3b50150d46162">AsyncResultFinishState&lt; Result &gt;</a>, <a class="el" href="class_xbox_drive_service.html#a1eb41645f36bf2a5c20777b0659fab12">XboxDriveService&lt; Drive, Value, Handler &gt;</a>, <a class="el" href="class_xbox_drive_service.html#a1eb41645f36bf2a5c20777b0659fab12">XboxDriveService&lt; MecanumDriveSubsystem, CartesianValue, MecanumDriveSubsystem::DriveByCartesian &gt;</a>, <a class="el" href="class_robot_subsystem.html#a7066b5d072b9ff707aabad9c46fcdc55">RobotSubsystem</a>, <a class="el" href="class_ps3_drive_service.html#ab169aaf1d278843a0b7df0aea3396b9b">Ps3DriveService&lt; Drive, Value, Fetcher, Handler &gt;</a>, <a class="el" href="class_service.html#a9604d04295202019e9a15f8c93bb31c6">Service</a>, <a class="el" href="class_state.html#a29e67195da90c4c44e0e8f0fbe938c7c">State</a>, <a class="el" href="class_state_machine_service.html#a6d449ca476108879d39c457f6ed0c443">StateMachineService</a>, <a class="el" href="class_live_window_service.html#afbb5d49a99c6d033d4556f9e32917ad3">LiveWindowService</a>, <a class="el" href="class_game_service.html#a8a71b44e940f9698128ca46b19ed7abb">GameService</a>, <a class="el" href="class_async_status_finish_state.html#a21f727ef7e4c1e5f284febf8f649f19a">AsyncStatusFinishState</a>, and <a class="el" href="class_time_wait_state.html#a67589e93acff3c395470f3fb4ad43e57">TimeWaitState</a>.</p>

</div>
</div>
<a class="anchor" id="aa545a5133edce53707738ee55d7b47cc"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_ptr&lt;T&gt; Subscriber::Launch </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; T &gt;&#160;</td>
          <td class="paramname"><em>operation</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Launch an <a class="el" href="class_operation.html">Operation</a> within this <a class="el" href="class_subscriber.html">Subscriber</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">operation</td><td>A shared pointer to <a class="el" href="class_operation.html">Operation</a> to be launched.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to the launched <a class="el" href="class_operation.html">Operation</a> (same as "operation"). </dd></dl>

</div>
</div>
<a class="anchor" id="ac4d2c5853af0a642ce7f5b52b3d09112"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_ptr&lt;T&gt; Subscriber::Launch </td>
          <td>(</td>
          <td class="paramtype">T *&#160;</td>
          <td class="paramname"><em>operation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteOperation</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Launch an <a class="el" href="class_operation.html">Operation</a> within this <a class="el" href="class_subscriber.html">Subscriber</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">operation</td><td>A pointer to <a class="el" href="class_operation.html">Operation</a> to be launched. </td></tr>
    <tr><td class="paramname">canDeleteOperation</td><td>If the <a class="el" href="class_subscriber.html">Subscriber</a> can delete the <a class="el" href="class_operation.html">Operation</a> so long as it functions correctly and no shared pointer is kept.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A shared pointer to the launched operation. </dd></dl>

</div>
</div>
<a class="anchor" id="adf012d21f14dd64d1afd95efe799d370"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T&amp; Subscriber::RequireControl </td>
          <td>(</td>
          <td class="paramtype">T &amp;&#160;</td>
          <td class="paramname"><em>obj</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add required control lock on an object (such as a <a class="el" href="class_robot_subsystem.html">RobotSubsystem</a>).</p>
<p>The lock is only acquired when the subscriber/service/operation is running. This prevents two unrelated subscribers from using the same object at the same time. For more information on using locking, see our <a class="el" href="class_thread.html">Thread</a> Safety Manuel that does not exist yet. :P</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">obj</td><td>A reference to the object to be locked.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The obj parameter. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>C:/Users/Sam/Projects/FRC/Libraries/Fpk/Entech-Fpk-Subscribers/Entech-Fpk/<a class="el" href="_subscriber_8hpp_source.html">Subscriber.hpp</a></li>
<li>C:/Users/Sam/Projects/FRC/Libraries/Fpk/Entech-Fpk-Subscribers/Entech-Fpk/Subscriber.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Aug 12 2013 16:46:51 for EnTech FPK by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>
